/*
	Stack.java
	Autor: Jennifer Pamela Valdez Cabrera
	Carne: 10189
	Fecha de entrega: 21 de Julio de 2011
	Descripcion: Es una interfaz para un Stack, el cual es una estructura 
		que el primer elemento en entrar es el ultimo en salir.
*/

public interface Stack<E>{

    /* 
		---------------------------------------------------------------------
		push: agrega un elemento al stack, el cual es recibido como
			parametro y no devuelve ningun valor.
		---------------------------------------------------------------------
	*/ 
	public void push(E item);
	// post: el item es agregado en el stack y ser� el siguiente en 
	//	     salir si no se agrega otro item
	
	
	/* 
		---------------------------------------------------------------------
		pop: obtiene el elemento al cual le toca salir y lo remueve del
			stack si no esta vacio; dicho elemento es devuelto
		---------------------------------------------------------------------
	*/ 
	public E pop();
	// pre: el stack no debe estar vacio
	// post: el ultimo elemento agragado es removido y devuelto
	
	
	/* 
		---------------------------------------------------------------------
		peek: devuelve el elemento proximo a ser removido
		---------------------------------------------------------------------
	*/ 
	public E peek();
	// pre: el stack no debe estar vacio
	// post: el ultimo elemento agregado es devuelto
	
	
	/* 
		---------------------------------------------------------------------
		empty: indica si el stack esta vacio
		---------------------------------------------------------------------
	*/ 
	public boolean empty();
	// post: regresa true si es ta vacio, y false si no
	
	
	/* 
		---------------------------------------------------------------------
		size: indica el cuantos elementos posee el stack
		---------------------------------------------------------------------
	*/ 
	public int size();
	// post: devuelve el numero de elementos que contiene el stack
}